用 Nest.js 開發 API 吧 (五) - Postgresql


Posted by AlanSyue on 2020-12-20

前兩篇介紹了 ControllerService 的用法,接下來預計分享 Nest.js 及 TypeOrm。再介紹 TypeOrm 之前,我們需要先來架設資料庫(db),要使用的是 Postgresql。

用 Docker 啟用 Postgresql

首先,先 pull Postgresql 的 docker image

docker pull postgres

再來,建立一個資料夾,用來儲存 Postgresql 的紀錄。

mkdir ${HOME}/postgres-data/

接著,執行下面的指令,build 出 Postgresql 的 container

docker run -d \
    --name dev-postgres \
    -e POSTGRES_PASSWORD={YOUR PASSWORD} \
    -v ${HOME}/postgres-data/:/var/lib/postgresql/data \
    -p 5432:5432 \
    postgres

用 Docker 啟用 pgAdmin

接下來我們要來建立 pgAdmin,透過 pgAdmin 就能有 GUI 來管理 Postgresql。
第一步也是先 pull docker image:

docker pull dpage/pgadmin4

再來執行以下指令,build 出 pgAdmin 的 container:

docker run -d \
    --name dev-pgadmin \
    -e 'PGADMIN_DEFAULT_EMAIL={YOUR EMAIL ACCOUNT}' \
    -e 'PGADMIN_DEFAULT_PASSWORD={YOUR PASSWORD}' \
    -p 80:80 \
    dpage/pgadmin4

啟用 pgAdmin 連接本地端 Postgresql

我們先在 terminal 輸入:

docker ps


根據上圖,可以看到已經建立兩個 container 了,接著輸入:

docker inspect dev-postgres -f "{{json .NetworkSettings.Networks }}"

可以看到以下資訊:

{
    "bridge":{
      "IPAMConfig":null,
      "Links":null,
      "Aliases":null,
      "NetworkID":"dc0eeecb88ba55574ec6854415e1dff0f65a56061967fed2146aae95e34cf814",
      "EndpointID":"9f820ae73f6293b6293c29ce3aabba4dc56b2d8a28382f5c490e78c6c59b0df9",
      "Gateway":"172.17.0.1",
      "IPAddress":"172.17.0.2",
      "IPPrefixLen":16,
      "IPv6Gateway":"",
      "GlobalIPv6Address":"",
      "GlobalIPv6PrefixLen":0,
      "MacAddress":"02:42:ac:11:00:02",
      "DriverOpts":null
   }
}

我們把其中的 "IPAddress":"172.17.0.2" 記下來,然後再瀏覽器輸入:
http://localhost:80,會到 pgAdmin 的登入畫面。輸入在 用 Docker 啟用 pgAdmin 創建的 PGADMIN_DEFAULT_EMAILPGADMIN_DEFAULT_PASSWORD 即可登入。

成功登入後,我們在主畫面點選 Add New Server

接著在 general 輸入 db 的名稱,如下圖範例,我輸入的是 itseed

再來,我們要來連接到用 docker build 出來的 Postgresql,我們在 Host name/address 輸入剛剛記下的 IPAddress
Username 填入 postgresPassword 則是上面執行指令時輸入的 POSTGRES_PASSWORD,如下圖所示,都沒問題後就按 Save

成功畫面:

小結

今天分享了使用 docker 建立 Postgresql 以及 pgAdmin,然後可以在 pgAdmin 成功連接資料庫。下一篇預計進入 TypeOrm 操作 Postgresql 的分享,如果文章有任何錯誤或建議,歡迎告知!

參考來源

Local Development Set-Up of PostgreSQL with Docker

NEXT:用 Nest.js 開發 API 吧 (六) - TypeORM


#nestjs #nodejs #docker #postgresql







Related Posts

【THM Walkthrough】Lateral Movement and Pivoting (1)

【THM Walkthrough】Lateral Movement and Pivoting (1)

MTR04 W2 D19 第二週作業

MTR04 W2 D19 第二週作業

HTML 盒模型 (Box model)

HTML 盒模型 (Box model)


Comments